package com.shujia.scala

import scala.collection.immutable

object Demo23Map {
  def main(args: Array[String]): Unit = {

    /**
      * map: kv格式集合
      *
      * ->： 构建二元组的简写
      */

    val map = Map(("001", "张三"), ("002", "李四"), ("003", "王五"), "004" -> "赵六")

    println(map)

    //可以通过key获取value
    println(map("001")) //如果key不存在会报错
    println(map.getOrElse("007", "默认值")) //如果key不存在返回默认值


    //获取所有的key
    println(map.keys)
    println(map.values) //所有value


    println("=" * 100)

    /**
      * foreach: 将map集合中的元素传递给后面的函数，以元组的形式传递给后面的函数
      *
      */

    map.foreach((kv: (String, String)) => {
      val key: String = kv._1
      val value: String = kv._2

      println(s"$key\t$value")
    })

    /**
      * map：将map集合中的袁术一个一个传递给后面的函数
      * 如果函数返回一个二元组，会被构建成一个新的mao
      * 如果函数返回一个非二元组，会被构建出一个List集合
      *
      */

    val map1: Map[String, String] = map.map((kv: (String, String)) => {
      //获取key
      val key: String = kv._1
      //获取value
      val value: String = kv._2

      val name: String = value + "1"

      //返回一个元组
      (key, name)
    })

    println(map1)

  }

}
